1. Field of the Invention
This invention relates to programmable logic devices and, more particularly, to a system and method for logging use of intellectual property by a user of programmable circuits, systems or devices, and for notifying a vendor of the programmable logic of such use. The system advantageously logs the number of programmable units being programmed. The information logged may be used for multiple purposes, one of which is to track royalty obligations due to the intellectual property owner.
2. Description of the Related Art
The following descriptions and examples are not admitted to be prior art by virtue of their inclusion within this section.
Programmable logic devices (PLDs) are commonly used to implement a vast array of logic networks. PLDs are general-purpose digital components which are manufactured in a non-programmed state and are later programmed to implement a desired logical function. The desired function can be any configuration that is used to carry out a subsystem operation preferred by a user.
There are numerous types of PLDs depending on the configuration and how the PLDs can be programmed. Most PLDs can be categorized as circuit logic that can either retain its programmed state or will lose its programmed state after power is removed. A PLD can include an array of programmable cells that are either volatile or non-volatile. Examples of different types of PLDs include programmable read-only memories (PROMs), field programmable logic arrays (FPLAs), programmable array logic devices (PALs), field programmable gate arrays (FPGAs), and complex programmable logic devices (CPLDs).
A PLD and all the aforementioned derivatives (FPGAs, FPLAs, etc.) are one example of a device that can be programmed by a user for a specific application. However, the intended purpose of the present device is not to be limited to a PLD or its derivatives. Nor should the intended purpose be limited to a single chip or device on a single packaged product. Instead, any circuit, subsystem, or multiple circuits or subsystems that can be programmed by a user for a specific purpose is defined as a programmable device.
If a programmable device implements an array of cells, the cells can be arranged as switches that are programmed after the particular logic function of the programmable device has been prepared and checked using a computer-aided design package appropriate for the programmable subsystem family being used. As such, the programmable device can involve a logic block containing an array of programmable switches which either retain their programmed state (non-volatile) or lose their programmed state (volatile) if power is removed. Regardless of whether the array can be programmed as a volatile or non-volatile array, in most instances, the array is programmed at the user's site.
A user having a defined design in mind will generally purchase an unprogrammed programmable device from a manufacturer. In instances where the programmable device is a PLD, the user can purchase the programmable device from Cypress Semiconductor. The programmable device may be stockpiled by the user and, when a design is needed, the programmable device can be programmed in the field using, for example, a program tool containing program code. The program tool can be a computer, or a portion of a computer, which stores a program that selectively activates or deactivates switches within the array of switches of the programmable device. The program, thereby, essentially contains the overall design template needed to configure the programmable device to a user-specified design. There are numerous types of program tools and programs/files resident on such tools, all of which are contained within a host computer, typically at the user or customer site. Of course, the programmable device can be a portion of a subsystem that can be programmed to implement a particular application, such as a bus bridge, media access controller (MAC), or virtually any system that can be configured, or periodically upgraded to new applications by a user.
One exemplary application is when a designer wishes to test a design. In these instances, a designer might purchase a programmable device and configure the device at the user site. The designer will receive the programmable device from the programmable device vendor and will program the programmable device at the site using a program the designer received either directly or indirectly from a company that owns the design. For example, a designer may wish to implement a counter. Instead of designing a counter from scratch, the designer will simply purchase a programmable device and program the programmable device in accordance with program code he/she obtains from the company that owns the counter design to be configured on that programmable device.
The owner of the design can therefore send a file of that design to a user who then executes that file within the user's host in order to program the programmable device. The entity which owns the design charges a licensing fee or royalty fee to the user who acquires the program. The design owner will not know how many programmable devices will be programmed and, therefore, typically charges a flat royalty fee for that design regardless of the number of programmable devices being programmed. This places a substantial burden on a designer who wishes only to test his or her design. In other words, a user may only wish to program one or two programmable devices to determine the viability of a design specification. Nonetheless, the owner of the design will require a fairly large royalty payment in order for the user to have access to the program.
Most users of programmable devices expect a low initial investment in the development of their designs, yet are willing to pay royalty fees only if those fees can be distributed among the programmable devices being programmed. A user may not choose to pay, for example, a $10,000 royalty fee if he/she only wishes to program one programmable device. However, if 10,000 programmable devices are to be programmed, the user is more likely to accept a $1 royalty fee per each programmed programmable device. In addition to benefits to the user, an intellectual property (IP) vendor also benefits. The IP contained in the IP being programmed into the programmable device is more likely to be used on a much larger quantity of products if the royalty obligations due to the IP vendor can be spread among each of those devices. The IP vendor design will therefore be more widespread in its use.
As used herein, intellectual property (IP) refers to ideas embodied into designs submitted by an owner of such ideas to a programmable device user. The ideas include anything that can be covered by patents, copyrights or trademarks, and/or anything that is protected by the IP vendor, and offered for value to a user. In return for submitting software containing a design bearing the IP of a vendor, the IP vendor will expect to receive royalty fees either directly or indirectly from the user. Thus, if a user wishes to update his or her MAC, the user can seek software that will reconfigure the MAC and, in return will have a royalty obligation to the IP vendor who sends the software necessary to reconfigure the user's MAC.
It is desirable to implement a system and methodology that minimizes the owner of the design (i.e., the IP vendor) from having to charge a high one-time royalty fee to a customer. The desired system and method beneficially tracks royalty fees among numerous programmed programmable devices so that the overall royalty can be disseminated amongst the programmed programmable devices. This will enhance the use of programmable devices in testing potential designs without suffering exorbitant one-time royalty fees.